home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / x / volume8 / xinvaders / patch2.01 < prev    next >
Encoding:
Text File  |  1990-08-15  |  14.7 KB  |  545 lines

  1. Path: uunet!cs.utexas.edu!usc!apple!sun-barr!newstop!sun!parc.xerox.com
  2. From: jgoldman@parc.xerox.com (Jonny Goldman)
  3. Newsgroups: comp.sources.x
  4. Subject: v08i070: xinvaders -- space invaders for X, Patch2, Part01/02
  5. Message-ID: <140742@sun.Eng.Sun.COM>
  6. Date: 16 Aug 90 02:56:12 GMT
  7. Sender: news@sun.Eng.Sun.COM
  8. Lines: 534
  9. Approved: argv@sun.com
  10.  
  11. Submitted-by: Jonny Goldman <jgoldman@parc.xerox.com>
  12. Posting-number: Volume 8, Issue 70
  13. Archive-name: xinvaders/patch2.01
  14. Patch-To: xinvaders: Volume 8, Issue 62-66,68
  15.  
  16. This is patch file #2 to the xinvaders game.  All it does is allow you to
  17. have two different game sizes.  I've done this by creating new bitmap files
  18. and modifying the source so it can handle the new (larger) size.  I've also
  19. added a new resource so the user can specify which size to use.
  20.  
  21. The patch expects you to have the previous patch in place.
  22.  
  23. There are all new bitmaps (.bit) files.  Actually, there are only some new
  24. files, some are just renamed from the old ones, but they're small, so I'm
  25. just including them as part of a shar file.
  26.  
  27. The files that changed are:
  28.  
  29. diff -c xinvaders.1/Makefile xinvaders/Makefile
  30. diff -c xinvaders.1/base.c xinvaders/base.c
  31. diff -c xinvaders.1/main.c xinvaders/main.c
  32. diff -c xinvaders.1/patchlevel.h xinvaders/patchlevel.h
  33. diff -c xinvaders.1/shot.c xinvaders/shot.c
  34. diff -c xinvaders.1/spacers.c xinvaders/spacers.c
  35. diff -c xinvaders.1/vaders.c xinvaders/vaders.c
  36. diff -c xinvaders.1/vaders.h xinvaders/vaders.h
  37. diff -c xinvaders.1/xinvaders.ma xinvaders/xinvaders.ma
  38.  
  39. Next comes the context diff.  The next part is a shar archive of the
  40. bitmaps.
  41.  
  42. -------------------------Cut Here and use patch----------------------------
  43.  
  44. diff -c xinvaders.1/Makefile xinvaders/Makefile
  45. *** xinvaders.1/Makefile    Tue Aug  7 10:29:23 1990
  46. --- xinvaders/Makefile    Tue Aug  7 17:19:29 1990
  47. ***************
  48. *** 7,15 ****
  49.   
  50.   LIBS = -lXaw -lXt -lXmu -lX11
  51.   
  52. ! BITS =     base.bit    sperma.bit    vader1b.bit    vader3a.bit \
  53. !     explode.bit    spermb.bit    vader2a.bit    vader3b.bit \
  54. !     spacer.bit    vader1a.bit    vader2b.bit
  55.   
  56.   INCS = patchlevel.h vaders.h
  57.   
  58. --- 7,18 ----
  59.   
  60.   LIBS = -lXaw -lXt -lXmu -lX11
  61.   
  62. ! BITS =     base1.bit    sperma1.bit    vader1b1.bit    vader3a1.bit \
  63. !     explode1.bit    spermb1.bit    vader2a1.bit    vader3b1.bit \
  64. !     spacer1.bit    vader1a1.bit    vader2b1.bit \
  65. !     base2.bit    sperma2.bit    vader1b2.bit    vader3a2.bit \
  66. !     explode2.bit    spermb2.bit    vader2a2.bit    vader3b2.bit \
  67. !     spacer2.bit    vader1a2.bit    vader2b2.bit
  68.   
  69.   INCS = patchlevel.h vaders.h
  70.   
  71. ***************
  72. *** 25,30 ****
  73. --- 28,35 ----
  74.   
  75.   SPLIT  = xinvaders.split.
  76.   
  77. + TAR = xinvaders.tar
  78.   xinvaders:    $(OBJS)
  79.       $(CC) -o xinvaders $(OBJS) $(LIBS)
  80.   
  81. ***************
  82. *** 35,37 ****
  83. --- 40,48 ----
  84.   
  85.   ${DISTRIB}: $(ALL)
  86.       shar $(ALL) | split -500 - ${SPLIT}
  87. + tar::    $(TAR)
  88. + $(TAR): $(ALL)
  89. +     tar cvf $(TAR) $(ALL)
  90. +     compress $(TAR)
  91.  
  92. diff -c xinvaders.1/base.c xinvaders/base.c
  93. *** xinvaders.1/base.c    Tue Aug  7 11:16:08 1990
  94. --- xinvaders/base.c    Tue Aug  7 15:53:02 1990
  95. ***************
  96. *** 49,55 ****
  97.     char *data, filename[255];
  98.     int i, status;
  99.   
  100. !   sprintf(filename, "%sbase.bit", bitdir);
  101.   
  102.     status = XmuReadBitmapDataFromFile (filename,
  103.                         &width, &height, &data,
  104. --- 49,55 ----
  105.     char *data, filename[255];
  106.     int i, status;
  107.   
  108. !   sprintf(filename, "%sbase%d.bit", bitdir, scale);
  109.   
  110.     status = XmuReadBitmapDataFromFile (filename,
  111.                         &width, &height, &data,
  112. ***************
  113. *** 71,77 ****
  114.     base->shape_image->bitmap_bit_order = LSBFirst;
  115.     base->shape_image->byte_order = LSBFirst;
  116.   
  117. !   sprintf(filename, "%sexplode.bit", bitdir);
  118.   
  119.     status = XmuReadBitmapDataFromFile (filename,
  120.                         &width, &height, &data,
  121. --- 71,77 ----
  122.     base->shape_image->bitmap_bit_order = LSBFirst;
  123.     base->shape_image->byte_order = LSBFirst;
  124.   
  125. !   sprintf(filename, "%sexplode%d.bit", bitdir, scale);
  126.   
  127.     status = XmuReadBitmapDataFromFile (filename,
  128.                         &width, &height, &data,
  129. ***************
  130. *** 231,243 ****
  131.   
  132.   void MoveLeft()
  133.   {
  134. !   if(!paused) base->v= -1;
  135.   }
  136.   
  137.   
  138.   void MoveRight()
  139.   {
  140. !   if(!paused) base->v = 1;
  141.   }
  142.   
  143.   
  144. --- 231,243 ----
  145.   
  146.   void MoveLeft()
  147.   {
  148. !   if(!paused) base->v= -scale;
  149.   }
  150.   
  151.   
  152.   void MoveRight()
  153.   {
  154. !   if(!paused) base->v = scale;
  155.   }
  156.   
  157.   
  158. ***************
  159. *** 258,265 ****
  160.   #define NUMBUILDINGS 4
  161.   #define HUNKROWS 4
  162.   #define NUMHUNKS 10
  163. ! #define HUNKWIDTH 2
  164. ! #define HUNKHEIGHT 4
  165.   #define buildingwidth HUNKWIDTH*NUMHUNKS
  166.   #define buildingheight HUNKHEIGHT*HUNKROWS
  167.   
  168. --- 258,265 ----
  169.   #define NUMBUILDINGS 4
  170.   #define HUNKROWS 4
  171.   #define NUMHUNKS 10
  172. ! #define HUNKWIDTH (2*scale)
  173. ! #define HUNKHEIGHT (4*scale)
  174.   #define buildingwidth HUNKWIDTH*NUMHUNKS
  175.   #define buildingheight HUNKHEIGHT*HUNKROWS
  176.   
  177. ***************
  178. *** 279,285 ****
  179.     int x, y, w, h;
  180.   
  181.     x = building->x+c*HUNKWIDTH;
  182. !   y = gameheight-45+r*HUNKHEIGHT;
  183.   
  184.     XFillRectangle(dpy, gamewindow, gc, x, y, HUNKWIDTH, HUNKHEIGHT);
  185.   }
  186. --- 279,285 ----
  187.     int x, y, w, h;
  188.   
  189.     x = building->x+c*HUNKWIDTH;
  190. !   y = gameheight-scale*45+r*HUNKHEIGHT;
  191.   
  192.     XFillRectangle(dpy, gamewindow, gc, x, y, HUNKWIDTH, HUNKHEIGHT);
  193.   }
  194. ***************
  195. *** 301,308 ****
  196.     for(i=0; i< NUMBUILDINGS; i++) {
  197.       building = &buildings[i];
  198.       if(x>=building->x && x<building->x+buildingwidth &&
  199. !        y>=gameheight-45 && y<gameheight-45+buildingheight) {
  200. !       r = (y-(gameheight-45))/HUNKHEIGHT;
  201.         c = (x-building->x)/HUNKWIDTH;
  202.         if (r<0 || r>=HUNKROWS)
  203.       printf("Error in row");
  204. --- 301,308 ----
  205.     for(i=0; i< NUMBUILDINGS; i++) {
  206.       building = &buildings[i];
  207.       if(x>=building->x && x<building->x+buildingwidth &&
  208. !        y>=gameheight-scale*45 && y<gameheight-scale*45+buildingheight) {
  209. !       r = (y-(gameheight-scale*45))/HUNKHEIGHT;
  210.         c = (x-building->x)/HUNKWIDTH;
  211.         if (r<0 || r>=HUNKROWS)
  212.       printf("Error in row");
  213. ***************
  214. *** 324,331 ****
  215.   
  216.     for(i=0; i< NUMBUILDINGS; i++) {
  217.       buildings[i].x = i*((gamewidth ?
  218. !              (VWIDTH -(3*(base->width+3))-70) :
  219. !              (gamewidth-(3*(base->width+3))-70)))/4+35;
  220.       for (j=0; j<HUNKROWS; j++)
  221.         for (k = 0; k < NUMHUNKS; k++) 
  222.       buildings[i].hunks[j][k] = TRUE;
  223. --- 324,331 ----
  224.   
  225.     for(i=0; i< NUMBUILDINGS; i++) {
  226.       buildings[i].x = i*((gamewidth ?
  227. !              (scale*VWIDTH -(3*(base->width+3))-scale*70) :
  228. !              (gamewidth-(3*(base->width+3))-scale*70)))/4+scale*35;
  229.       for (j=0; j<HUNKROWS; j++)
  230.         for (k = 0; k < NUMHUNKS; k++) 
  231.       buildings[i].hunks[j][k] = TRUE;
  232.  
  233. diff -c xinvaders.1/main.c xinvaders/main.c
  234. *** xinvaders.1/main.c    Tue Aug  7 11:07:26 1990
  235. --- xinvaders/main.c    Tue Aug  7 15:55:44 1990
  236. ***************
  237. *** 38,43 ****
  238. --- 38,45 ----
  239.        (Cardinal)&debug, XtRString, "off"},
  240.       {"bitdir", "BitmapDirectory", XtRString, sizeof(String),
  241.        (Cardinal)&bitdir, XtRString, (String)"./"},
  242. +     {"scale", "Scale", XtRInt, sizeof(int),
  243. +      (Cardinal)&scale, XtRImmediate, (caddr_t) 1},
  244.       {"basewait", "BaseWait", XtRInt, sizeof(int),
  245.        (Cardinal)&basewait, XtRImmediate, (caddr_t) 10},
  246.       {"vaderwait", "VaderWait", XtRInt, sizeof(int),
  247. ***************
  248. *** 138,145 ****
  249.       vshotpixel = defaultfore;
  250.       scorepixel = defaultfore;
  251.       }
  252. !     width = VWIDTH;
  253. !     height = VHEIGHT;
  254.       args[0].value = (XtArgVal) width;
  255.       args[1].value = (XtArgVal) height;
  256.   #ifndef X11R3
  257. --- 140,149 ----
  258.       vshotpixel = defaultfore;
  259.       scorepixel = defaultfore;
  260.       }
  261. !     if (scale<1) scale = 1;
  262. !     if (scale>2) scale = 2;
  263. !     width = scale*VWIDTH;
  264. !     height = scale*VHEIGHT;
  265.       args[0].value = (XtArgVal) width;
  266.       args[1].value = (XtArgVal) height;
  267.   #ifndef X11R3
  268.  
  269. diff -c xinvaders.1/patchlevel.h xinvaders/patchlevel.h
  270. *** xinvaders.1/patchlevel.h    Tue Aug  7 11:24:58 1990
  271. --- xinvaders/patchlevel.h    Tue Aug  7 17:13:10 1990
  272. ***************
  273. *** 13,23 ****
  274.   
  275.   /* patchlevel.h -- patchlevel for xinvaders */
  276.   
  277. ! #define PATCHLEVEL 1
  278.   
  279.   /* 
  280.     added patches for X11R3 - from duncan@mips.com
  281.     quicker vader updating - from koreth@ebay.sun.com
  282.     and bitdir - the BitmapDirectory resource, courtesy of me.
  283.     Tue Aug  7 1990
  284.   */
  285. --- 13,29 ----
  286.   
  287.   /* patchlevel.h -- patchlevel for xinvaders */
  288.   
  289. ! #define PATCHLEVEL 2
  290.   
  291.   /* 
  292. +   version 1.1:
  293.     added patches for X11R3 - from duncan@mips.com
  294.     quicker vader updating - from koreth@ebay.sun.com
  295.     and bitdir - the BitmapDirectory resource, courtesy of me.
  296.     Tue Aug  7 1990
  297. +   version 1.2:
  298. +   added multi-resolution code.  created new bitmaps for large-scale.
  299. +   added new resource for scale: Vaders*Scale, 1=normal, 2=large.
  300.   */
  301.  
  302. diff -c xinvaders.1/shot.c xinvaders/shot.c
  303. *** xinvaders.1/shot.c    Tue Aug  7 10:52:27 1990
  304. --- xinvaders/shot.c    Tue Aug  7 15:32:08 1990
  305. ***************
  306. *** 19,25 ****
  307.   
  308.   #define MAXSHOTS    1
  309.   #define MAXVSHOTS    6
  310. ! #define SHOTSIZE    8
  311.   
  312.   typedef struct _ShotRec {
  313.       int x, y;        /* Location of this shot. */
  314. --- 19,25 ----
  315.   
  316.   #define MAXSHOTS    1
  317.   #define MAXVSHOTS    6
  318. ! #define SHOTSIZE    (8*scale)
  319.   
  320.   typedef struct _ShotRec {
  321.       int x, y;        /* Location of this shot. */
  322. ***************
  323. *** 146,152 ****
  324.         vshottimerid = NULL;
  325.       for (i=0 ; i<numvshots ; i++) {
  326.         vshot = vshots + i;
  327. !       newy = vshot->y + 2;
  328.         x = vshot->x;
  329.         y = vshot->y;
  330.         if (y>gameheight ||
  331. --- 146,152 ----
  332.         vshottimerid = NULL;
  333.       for (i=0 ; i<numvshots ; i++) {
  334.         vshot = vshots + i;
  335. !       newy = vshot->y + 2*scale;
  336.         x = vshot->x;
  337.         y = vshot->y;
  338.         if (y>gameheight ||
  339. ***************
  340. *** 206,212 ****
  341.     int i, status;
  342.   
  343.     for (i = 0; i < 2; i++) {
  344. !     sprintf(filename, "%ssperm%s.bit", bitdir, (i ? "b" : "a"));
  345.       status = XmuReadBitmapDataFromFile (filename,
  346.                       &width, &height, &data,
  347.                       &x_hot, &y_hot);
  348. --- 206,212 ----
  349.     int i, status;
  350.   
  351.     for (i = 0; i < 2; i++) {
  352. !     sprintf(filename, "%ssperm%s%d.bit", bitdir, (i ? "b" : "a"), scale);
  353.       status = XmuReadBitmapDataFromFile (filename,
  354.                       &width, &height, &data,
  355.                       &x_hot, &y_hot);
  356.  
  357. diff -c xinvaders.1/spacers.c xinvaders/spacers.c
  358. *** xinvaders.1/spacers.c    Tue Aug  7 10:53:01 1990
  359. --- xinvaders/spacers.c    Tue Aug  7 15:29:02 1990
  360. ***************
  361. *** 18,24 ****
  362.   Boolean spacer_shown;
  363.   
  364.   #define SPACERY 0
  365. ! #define SPACERV 2
  366.   
  367.   typedef struct _SpacerRec {
  368.     int x;            /* Location. */
  369. --- 18,24 ----
  370.   Boolean spacer_shown;
  371.   
  372.   #define SPACERY 0
  373. ! #define SPACERV 2*scale
  374.   
  375.   typedef struct _SpacerRec {
  376.     int x;            /* Location. */
  377. ***************
  378. *** 142,148 ****
  379.     unsigned char *data, filename[255];
  380.     int status;
  381.   
  382. !   sprintf(filename, "%sspacer.bit", bitdir);
  383.   
  384.     status = XmuReadBitmapDataFromFile (filename,
  385.                         &width, &height, &data,
  386. --- 142,148 ----
  387.     unsigned char *data, filename[255];
  388.     int status;
  389.   
  390. !   sprintf(filename, "%sspacer%d.bit", bitdir, scale);
  391.   
  392.     status = XmuReadBitmapDataFromFile (filename,
  393.                         &width, &height, &data,
  394.  
  395. diff -c xinvaders.1/vaders.c xinvaders/vaders.c
  396. *** xinvaders.1/vaders.c    Tue Aug  7 10:53:25 1990
  397. --- xinvaders/vaders.c    Tue Aug  7 15:28:22 1990
  398. ***************
  399. *** 19,27 ****
  400.   #define NUMROWS        5    /* number of rows of vaders */
  401.   #define NUMVADERS    11    /* Maximum of vaders of each type. */
  402.   #define BASEY 10
  403. ! #define VADERWIDTH    14
  404. ! #define VADERHEIGHT    12
  405. ! #define VADERYINC    8
  406.   
  407.   static XImage *Vader_Image[NUMTYPES][2];    /* XImages for the vaders. */
  408.   
  409. --- 19,27 ----
  410.   #define NUMROWS        5    /* number of rows of vaders */
  411.   #define NUMVADERS    11    /* Maximum of vaders of each type. */
  412.   #define BASEY 10
  413. ! #define VADERWIDTH    (14*scale)
  414. ! #define VADERHEIGHT    (12*scale)
  415. ! #define VADERYINC    (8*scale)
  416.   
  417.   static XImage *Vader_Image[NUMTYPES][2];    /* XImages for the vaders. */
  418.   
  419. ***************
  420. *** 55,61 ****
  421.   extern Base base;
  422.   
  423.   /* indicates pad around vader bitmap for better collision detection */
  424. ! #define VADERPAD     1
  425.   
  426.   #define PointInVader(vader, x, y)    \
  427.     (x >= (vader)->x+VADERPAD && y >= (vader)->y &&        \
  428. --- 55,61 ----
  429.   extern Base base;
  430.   
  431.   /* indicates pad around vader bitmap for better collision detection */
  432. ! #define VADERPAD     scale
  433.   
  434.   #define PointInVader(vader, x, y)    \
  435.     (x >= (vader)->x+VADERPAD && y >= (vader)->y &&        \
  436. ***************
  437. *** 224,230 ****
  438.   
  439.     for (i = 0; i < NUMTYPES; i++)
  440.       for (j = 0; j < 2; j++) {
  441. !       sprintf(filename, "%svader%d%s.bit", bitdir, (i+1), (j ? "b" : "a")); 
  442.         status = XmuReadBitmapDataFromFile (filename,
  443.                         &width, &height, &data,
  444.                         &x_hot, &y_hot);
  445. --- 224,230 ----
  446.   
  447.     for (i = 0; i < NUMTYPES; i++)
  448.       for (j = 0; j < 2; j++) {
  449. !       sprintf(filename, "%svader%d%s%d.bit", bitdir, (i+1), (j ? "b" : "a"), scale); 
  450.         status = XmuReadBitmapDataFromFile (filename,
  451.                         &width, &height, &data,
  452.                         &x_hot, &y_hot);
  453. ***************
  454. *** 261,267 ****
  455.         vader = &vaders[j][i];
  456.         vader->x = 3 + VADERWIDTH*i+(VADERWIDTH-vader->width)/2;
  457.         vader->y = VADERHEIGHT*(offset+j);
  458. !       vader->vx = 1;
  459.         vader->alive = TRUE;
  460.       }
  461.   }
  462. --- 261,267 ----
  463.         vader = &vaders[j][i];
  464.         vader->x = 3 + VADERWIDTH*i+(VADERWIDTH-vader->width)/2;
  465.         vader->y = VADERHEIGHT*(offset+j);
  466. !       vader->vx = scale;
  467.         vader->alive = TRUE;
  468.       }
  469.   }
  470. diff -c xinvaders.1/vaders.h xinvaders/vaders.h
  471. *** xinvaders.1/vaders.h    Tue Aug  7 10:47:43 1990
  472. --- xinvaders/vaders.h    Tue Aug  7 14:58:51 1990
  473. ***************
  474. *** 87,92 ****
  475. --- 87,93 ----
  476.    */
  477.   
  478.   ext char *bitdir;
  479. + ext int scale;
  480.   
  481.   ext Boolean debug;
  482.   ext int level;
  483.  
  484. diff -c xinvaders.1/xinvaders.ma xinvaders/xinvaders.ma
  485. *** xinvaders.1/xinvaders.ma    Tue Aug  7 11:18:20 1990
  486. --- xinvaders/xinvaders.ma    Tue Aug  7 17:16:31 1990
  487. ***************
  488. *** 11,17 ****
  489.   X11 window system.
  490.   
  491.   .SH PATCH LEVEL
  492. ! xinvaders is now at Patch Level 1
  493.   
  494.   .SH PLAYING XINVADERS
  495.   The game will start with all the invaders drawn.  Press 'p' to play, and
  496. --- 11,17 ----
  497.   X11 window system.
  498.   
  499.   .SH PATCH LEVEL
  500. ! xinvaders is now at Patch Level 2
  501.   
  502.   .SH PLAYING XINVADERS
  503.   The game will start with all the invaders drawn.  Press 'p' to play, and
  504. ***************
  505. *** 78,83 ****
  506. --- 78,93 ----
  507.   works on monochrome screens, but the colors don't mean anything (surprise!).
  508.   .PP
  509.   .TP 8
  510. + .B BitmapDirectory
  511. + The directory pathname for the bitmap files. Must have a trailing directory
  512. + delimiter (usually a /).
  513. + .PP
  514. + .TP 8
  515. + .B Scale
  516. + A switch that allows for multiple resolutions.
  517. + 1 for normal resolution, 2 for 2x zoom.
  518. + .PP
  519. + .TP 8
  520.   .B BaseColor
  521.   The color for the Base (you).  Default is white.
  522.   .PP
  523. ***************
  524. *** 118,123 ****
  525. --- 128,134 ----
  526.   your .Xdefaults file):
  527.   
  528.    Vaders*BitmapDirectory:        ./
  529. +  Vaders*Scale:                  1
  530.    Vaders*defaultfore:            black
  531.    Vaders*defaultback:            white
  532.    Vaders*Vader1Color:            blue
  533.  
  534. -------------------------Cut Here----------------------------
  535.  
  536. dan
  537. ----------------------------------------------------
  538. O'Reilly && Associates   argv@sun.com / argv@ora.com
  539. Opinions expressed reflect those of the author only.
  540.